package com.jnshu.controller;

import com.jnshu.dto.task.TaskListBackList;
import com.jnshu.dto.task.TaskListDetailDto;
import com.jnshu.dto.task.TaskVo;
import com.jnshu.service.TaskService;
import com.jnshu.tools.resultUtils.PageBean;
import com.jnshu.tools.resultUtils.RUtil;
import com.jnshu.tools.resultUtils.ResultBean;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@Log
public class AdminTaskController {
    @Autowired(required = false)
    TaskService taskService;

    /**
     * 任务列表
     * @param
     * @return
     */
    @PostMapping("/task/list/")
    public PageBean taskList(@RequestBody TaskListBackList taskListBackList) {
        log.info("任务列表的入参为："+taskListBackList);
        return taskService.selectTaskList(taskListBackList);
    }

    /**
     *
     */
    @GetMapping("/task/list")
    public PageBean task(@RequestParam(name = "pageSize",defaultValue = "10")int pageSize,
                         @RequestParam(name = "pageNum",defaultValue = "1")int pageNum){
        log.info("传入的页码为:"+pageNum+",每页显示的数量："+pageSize);
        return taskService.selectTask(pageSize,pageNum);
    }

    /**
     * 任务详情
     * @param id
     * @return
     */
    @GetMapping("/task")
    public ResultBean getTask(long id) {
        log.info("任务详情页面的入参为："+id);
        TaskListDetailDto taskListDetailDto = taskService.selectTaskById(id);
        return RUtil.ok(taskListDetailDto);
    }

    /**
     * 任务编辑
     * @param taskVo
     * @return
     */
    @PutMapping("/task")
    public ResultBean putTask(TaskVo taskVo) {
        log.info("任务编辑页面的入参为："+taskVo);
        return taskService.updateTask(taskVo);
    }


    /**
     * 任务新增
     * @param taskVo
     * @return
     */
    @PostMapping("/task")
    public ResultBean postTask(TaskVo taskVo) {
        log.info("任务新增页面的入参为："+taskVo);
        return taskService.insertTask(taskVo);
    }

    /**
     * 任务删除
     * @param id
     * @return
     */
    @DeleteMapping("/task")
    public ResultBean deleteTask(@RequestParam long id) {
        log.info("页面任务删除传入的ID："+id);
        return taskService.deleteTask(id);
    }

    /**
     * 修改公告上下架状态
     * @param id
     * @param status
     * @return
     */
    @PutMapping("/task/status")
    public ResultBean putTaskStatus(long id, int status){
        log.info("要修改上下架状态的任务ID为："+id+",任务上下架的状态："+status);
        return taskService.updateTaskStatus(id,status);
    }
}
